package controller;

import model.Movimiento;
import beans.MovimientoBean;
import dao.HibernateMovimientoDAO;
import dto.MovimientoDTO;

public class AdministradorMovimiento {
	private static AdministradorMovimiento instancia;

	private AdministradorMovimiento() {

	}

	public static AdministradorMovimiento getInstancia() {
		if (instancia == null)
			instancia = new AdministradorMovimiento();
		return instancia;
	}

	public MovimientoBean fromModelTOBean(Movimiento movimiento) {
		MovimientoBean movimientoBean = null;
		if (movimiento != null) {
			movimientoBean = new MovimientoBean();
			movimientoBean.setIdMovimiento(movimiento.getId());
			movimientoBean.setCantidad(movimiento.getCantidad());
			movimientoBean.setDeposito(AdministradorDeposito.getInstancia()
					.fromModelTOBean(movimiento.getDeposito()));
			movimientoBean.setFechaAlta(movimiento.getFechaAlta());
			movimientoBean.setFechaModificacion(movimiento
					.getFechaModificacion());
			movimientoBean.setLote(AdministradorLote.getInstancia()
					.fromModelTOBean(movimiento.getLote()));
			movimientoBean.setMotivo(movimiento.getMotivo());
			movimientoBean.setTipo(movimiento.getTipo());
			movimientoBean.setUsuarioAlta(movimiento.getUsuarioAlta());
			movimientoBean.setUsuarioModificacion(movimiento
					.getUsuarioModificacion());
		}
		return movimientoBean;
	}

	public Movimiento fromDTOTOModel(MovimientoDTO movimientoDTO) {
		Movimiento movimiento = null;
		if (movimientoDTO != null) {
			movimiento = new Movimiento();
			movimiento.setId(movimientoDTO.getId());
			movimiento.setCantidad(movimientoDTO.getCantidad());
			movimiento.setDeposito(AdministradorDeposito.getInstancia()
					.fromDTOTOModel(movimientoDTO.getDeposito()));
			movimiento.setFechaAlta(movimientoDTO.getFechaAlta());
			movimiento.setFechaModificacion(movimientoDTO
					.getFechaModificacion());
			movimiento.setLote(AdministradorLote.getInstancia().fromDTOTOModel(
					movimientoDTO.getLote()));
			movimiento.setMotivo(movimientoDTO.getMotivo());
			movimiento.setTipo(movimientoDTO.getTipo());
			movimiento.setUsuarioAlta(movimientoDTO.getUsuarioAlta());
			movimiento.setUsuarioModificacion(movimientoDTO
					.getUsuarioModificacion());
		}
		return movimiento;
	}

	public MovimientoDTO fromModelTODTO(Movimiento movimiento) {
		MovimientoDTO movimientoDTO = null;
		if (movimiento != null) {
			movimientoDTO = new MovimientoDTO();
			movimientoDTO.setId(movimiento.getId());
			movimientoDTO.setCantidad(movimiento.getCantidad());
			movimientoDTO.setDeposito(AdministradorDeposito.getInstancia()
					.fromModelTODTO(movimiento.getDeposito()));
			movimientoDTO.setFechaAlta(movimiento.getFechaAlta());
			movimientoDTO.setFechaModificacion(movimiento
					.getFechaModificacion());
			movimientoDTO.setLote(AdministradorLote.getInstancia()
					.fromModelTODTO(movimiento.getLote()));
			movimientoDTO.setMotivo(movimiento.getMotivo());
			movimientoDTO.setTipo(movimiento.getTipo());
			movimientoDTO.setUsuarioAlta(movimiento.getUsuarioAlta());
			movimientoDTO.setUsuarioModificacion(movimiento
					.getUsuarioModificacion());
		}
		return movimientoDTO;
	}

	public Movimiento fromBeanTOModel(MovimientoBean movimientoBean) {
		Movimiento movimiento = null;
		if (movimientoBean != null) {

			movimiento = new Movimiento();
			movimiento.setId(movimientoBean.getIdMovimiento());
			movimiento.setCantidad(movimientoBean.getCantidad());
			movimiento.setDeposito(AdministradorDeposito.getInstancia()
					.fromBeanTOModel(movimientoBean.getDeposito()));
			movimiento.setFechaAlta(movimientoBean.getFechaAlta());
			movimiento.setFechaModificacion(movimientoBean
					.getFechaModificacion());
			movimiento.setLote(AdministradorLote.getInstancia()
					.fromBeanTOModel(movimientoBean.getLote()));
			movimiento.setMotivo(movimientoBean.getMotivo());
			movimiento.setTipo(movimientoBean.getTipo());
			movimiento.setUsuarioAlta(movimientoBean.getUsuarioAlta());
			movimiento.setUsuarioModificacion(movimientoBean
					.getUsuarioModificacion());

		}
		return movimiento;
	}

	public void grabarMovimiento(Movimiento mov) {
		MovimientoBean movb = fromModelTOBean(mov);
		HibernateMovimientoDAO.getInstancia().grabarMovimiento(movb);

	}

	public Movimiento buscarMovimiento(Movimiento mov) {
		MovimientoBean movb = fromModelTOBean(mov);
		movb = HibernateMovimientoDAO.getInstancia().buscarMovimiento(movb);
		return fromBeanTOModel(movb);
	}

	public void updateMovimiento(Movimiento mov1) {
		HibernateMovimientoDAO.getInstancia().updateMovimiento(
				fromModelTOBean(mov1));

	}
}
